/*=============================================================================
**                              Cuong Chu
**                            Copyright 2011 - 2014
**-----------------------------------------------------------------------------
** Supported MCUs      : MCU STM32F103
** Supported Compilers : Compiler independent
**-----------------------------------------------------------------------------
** File name         : output.c
**
** Module name       : Output 
**
** Requirement specification : 
**
** Summary: Output controller 
**
**= History ====================================================================
** 01.00  17/07/2014  Cuong Chu
** -  Creation
** - Creation
**        17/7/2017   Cuong Chu
** - once call clock supply by function IOEnableClock
==============================================================================*/
#ifndef OUTPUT_OUTPUT_H
#define OUTPUT_OUTPUT_H
/*****************************************************************************/
/* INCLUSIONS                                                                */
/*****************************************************************************/
#include "stdint.h"
#include "stm32f10x.h"
#include "bsp/bsp.h"
/*****************************************************************************/
/* DEFINATION OF CONST                                                       */
/*****************************************************************************/
#define IOCTRL_NUMBER_OF_OUTPUT          64
/*****************************************************************************/
/* DEFINATION OF TYPES                                                       */
/*****************************************************************************/
typedef enum
{
  OUT_CH_1 = 0,
  OUT_CH_2  ,
  OUT_CH_3  ,
  OUT_CH_4  ,
  OUT_CH_5  ,
  OUT_CH_6  ,
  OUT_CH_7  ,
  OUT_CH_8  ,
  OUT_CH_9  ,
  OUT_CH_10 ,
  OUT_CH_11 ,
  OUT_CH_12 ,
  OUT_CH_13 ,
  OUT_CH_14 ,
  OUT_CH_15 ,
  OUT_CH_16 ,
  OUT_CH_17 ,
  OUT_CH_18 ,
  OUT_CH_19 ,
  OUT_CH_20 ,
  OUT_CH_21 ,
  OUT_CH_22 ,
  OUT_CH_23 ,
  OUT_CH_24 ,
  OUT_CH_25 ,
  OUT_CH_26 ,
  OUT_CH_27 ,
  OUT_CH_28 ,
  OUT_CH_29 ,
  OUT_CH_30 ,
  OUT_CH_31 ,
  OUT_CH_32 ,
  OUT_CH_33 ,
  OUT_CH_34 ,
  OUT_CH_35 ,
  OUT_CH_36 ,
  OUT_CH_37 ,
  OUT_CH_38 ,
  OUT_CH_39 ,
  OUT_CH_40 ,
  OUT_CH_41 ,
  OUT_CH_42 ,
  OUT_CH_43 ,
  OUT_CH_44 ,
  OUT_CH_45 ,
  OUT_CH_46 ,
  OUT_CH_47 ,
  OUT_CH_48 ,
  OUT_CH_49 ,
  OUT_CH_50 ,
  OUT_CH_51 ,
  OUT_CH_52 ,
  OUT_CH_53 ,
  OUT_CH_54 ,
  OUT_CH_55 ,
  OUT_CH_56 ,
  OUT_CH_57 ,
  OUT_CH_58 ,
  OUT_CH_59 ,
  OUT_CH_60 ,
  OUT_CH_61 ,
  OUT_CH_62 ,
  OUT_CH_63 ,
  OUT_CH_64 ,
  OUT_LCD_D0,
  OUT_LCD_D1,
  OUT_LCD_D2,
  OUT_LCD_D3,
  OUT_LCD_RS,
  OUT_LCD_RW,
  OUT_LCD_EN,
  OUT_KEYP_R0,
  OUT_KEYP_R1,
  OUT_KEYP_R2,
  OUT_KEYP_R3,
  OUT_LED_OK,
  OUT_LED_NG
}OUTPUT_OutputType;
/*****************************************************************************/
/* DECLARATION OF GLOBAL FUNCTION                                            */
/*****************************************************************************/
/******************************************************************************
** Function Name: OUTPUT_IOEnableClock(void)
** Description  : The function enbales clock for all GPIOs
** Parameter    : None
** Return       : None
** Note         : 
******************************************************************************/
void OUTPUT_IOEnableClock
(
  void
);
/******************************************************************************
** Function Name: OUTPUT_OutputInit(OUTPUT_OutputType channel)
** Description  : The function inits relay controller
** Parameter    : OUT_CH_1...OUT_CH_8
** Return       : None
** Note         : The jumper J1 on OUTPUT board is must closed
******************************************************************************/
void OUTPUT_OutputInit
(
  OUTPUT_OutputType channel
);
/******************************************************************************
** Function Name: OUTPUT_OutputSetLogic(OUTPUT_OutputType channel, OUTPUT_LogicLevel level)
** Description  : The function sets login selected on pin output channel
** Parameter    : None
** Return       : None
** Note         : 
******************************************************************************/
void OUTPUT_OutputSetLogic
(
  OUTPUT_OutputType channel, 
  COMST32_LogicLevel level
);
#endif /* OUTPUT_BUZZER_H */
